import json
import pickle
import base64
# 编解码原理及区别
#
# # JSON  (只能转字典和列表  转换后KEY 会有改变) dict<===> json_str
# data_dict ={
#     1:{
#         2:{
#             "count":3,
#             "selected":True
#         }
#     }
# }
# json_str = json.dumps(data_dict)#输出字符串
# json_dict = json.loads(json_str)#输出字典
# # pickle  (可以保存所有数据) 所有需要转换的对象   转换回去还可以保持以前的类型  使用场景最多的是保存对象
# # 将数据转成二进制
# pickle_bytes = pickle.dumps(data_dict)
# # 将二进制转成数据
# pickle_data = pickle.loads(data_dict)
#
# base64_encode = base64.b64encode(pickle_bytes)
#
# base64_decode = base64.b16decode(base64_encode.decode())

class CookieSecret(object):
    # 加密编码
    @classmethod
    def dumps(cls,data):
        # 抓换成二进制
        pickle_bytes = pickle.dumps(data)
        # 将bytes使用base64序列化加密
        base64_encode = base64.b64encode(pickle_bytes)
        return base64_encode.decode()
    # 解密解码
    @classmethod
    def loads(cls,data):
        # 将数据解密成bytes
        base64_decode = base64.b64decode(data)
        # 将bytes转回原来的python类型
        data = pickle.loads(base64_decode)
        return data
#    解密挂了
# a = '{1:"2"}'
# b = {1:3}
# b = CookieSecret.dumps(a)
# c = CookieSecret.loads(b)
# print(b)
# print(c)